package cn.tedu.rabbitmqspring.m1;


import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;
import java.util.Scanner;


@SpringBootApplication
public class Main {
    @Autowired
    private Produer p;

    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }

    //配置队列的参数
    @Bean
    public Queue helloworldQueue(){
     return new Queue("helloworld",false,false,false);
    }

    /**
     *  @PostConstruct  一般用来执行初始化动作
     *
     * spring 执行流程
     *  自动扫描创建实例--> 自动注入 -->  @PostConstruct --> 后续流程
     */
    @PostConstruct
    public void test(){
        //死循环输入消息发送
        //在新的线程中执行，不影响spring主线程的执行
        new Thread(() -> {
            while(true){
                System.out.println("输入消息：");
                String s = new Scanner(System.in).nextLine();
                //spring 封装的 rabbitmq qpi 不允许发送空消息
                if(s.trim().length() != 0){
                    p.send(s);
                }
            }
        }).start();
    }
}
